home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -serious- / comms / other / sps / sps.rexx < prev   
OS/2 REXX Batch file  |  1999-09-06  |  3KB  |  119 lines

  1.  
  2. /* $VER: SPS v1.0 (23/08/99)
  3.    Samba Print Spooler v1.0 by Robert Wilson
  4.    http://www.dynamix.f9.co.uk
  5. */
  6.  
  7. /* START USER SETTINGS */
  8.  
  9. spooldir = 'Data:spool/'
  10. username = 'username'
  11. password = 'password'
  12. printer = '\\server\PRINTER'
  13. setcmd = 1
  14. runcmd = 1
  15. cmdpath = 'sys:utilities/cmd'
  16. /* cmdpath = 'sys:wbstartup/cmd' */
  17. pubscreen = 'Workbench'
  18.  
  19. /* END USER SETTINGS */
  20.  
  21. signal on BREAK_C
  22. signal on FAILURE
  23. signal on IOERR
  24.  
  25. if ~show(l,'rexxsupport.library') then do
  26.    if ~addlib('rexxsupport.library',0,-30,0) then do
  27.       say 'rexxsupport.library not available'
  28.       exit
  29.    end
  30. end
  31.  
  32. if ~show(l,'rexxtricks.library') then do
  33.    if ~addlib('rexxtricks.library',0,-30,0) then do
  34.       say 'rexxtricks.library not available'
  35.       exit
  36.    end
  37. end
  38.  
  39. if ~show(l,'rexxreqtools.library') then do
  40.    if ~addlib('rexxreqtools.library',0,-30,0) then do
  41.       say 'rexxreqtools.library not available'
  42.       exit
  43.    end
  44. end
  45.  
  46. scriptname = 'Samba Print Spooler v1.0 by Robert Wilson'
  47.  
  48. if right(spooldir,1) ~= '/' & right(spooldir,1) ~= ':' then do
  49.   call rtezrequest('The spooldir must end in ":" or "/"','_Sorry!',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen)
  50.   exit
  51. end
  52.  
  53. if setcmd = 1 then do
  54.   tooltypes.0 = 5
  55.   tooltypes.1 = 'DEVICE=parallel'
  56.   tooltypes.2 = 'FILE='spooldir'sps'
  57.   tooltypes.3 = 'SKIP=FALSE'
  58.   tooltypes.4 = 'MULTIPLE=TRUE'
  59.   tooltypes.5 = 'NOTIFY=FALSE'
  60.   if ~settooltypes(cmdpath,tooltypes) then call rtezrequest('Error unable to set CMD''s tooltypes)','_Hmmm',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen)
  61. end
  62.  
  63. address 'COMMAND'
  64.  
  65. if runcmd = 1 then do
  66.   'run <>nil:' cmdpath 'parallel' spooldir'sps opt m'
  67. end
  68.  
  69. do forever
  70.   if getdir(spooldir,'~(#?.info)','stemvar','FILES','PATH') then do
  71.     do i = 1 to stemvar.0
  72.       call sendfile(stemvar.i)
  73.     end
  74.   end
  75.   else call delay (10*50)
  76. end
  77.  
  78. exit
  79.  
  80. /* */
  81.  
  82. sendfile:
  83. parse arg filename
  84. if open(file,filename,'R') then do /* check to see if file is not still being spooled */
  85.   call close(file)
  86.   'amitcp:samba/bin/smbclient 'printer '-P -U' username'%'password '"-c printmode graphics; print' filename'" >nil:'
  87.   if RC = 0 then 'c:delete' filename 'FORCE QUIET'
  88.   else call servererror()
  89. end
  90. else call delay(10*50)
  91. return
  92.  
  93. /* */
  94.  
  95. BREAK_C:
  96. call rtezrequest('User break (CTRL-C)','_Okay',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen)
  97. exit
  98.  
  99. /* */
  100.  
  101. FAILURE:
  102. IOERR:
  103. call rtezrequest('An error has occured!' || '0A'x || errortext(RC),'_Damn!',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen)
  104. exit
  105.  
  106. /* */
  107.  
  108. servererror:
  109. errorreq = 0
  110. if exists('rexx:autoclose.rexx') then errorreq = autoclose(start,10,pubscreen,'Samba')
  111. answer = rtezrequest('Unable to spool file "'filename'"' || '0A'x || 'to print server "'printer'"','_Retry|_Wait 60 seconds|_Quit',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen)
  112. if errorreq ~= 0 then call autoclose(stop,errorreq)
  113. if answer = 0 then do
  114.   if rtezrequest('Are you sure that you want'|| '0A'x ||'to close Samba Print Spooler?','_Yes|_No',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) then exit
  115. end
  116. if answer = 2 then call delay(60*50)
  117. return
  118.  
  119.